package com.qf.cardlike.controller;

import com.github.pagehelper.PageInfo;
import com.qf.cardlike.domain.Card;
import com.qf.cardlike.response.Response;
import com.qf.cardlike.service.CardService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @authorDXT
 * @date2022/5/17 9:48
 */
@RestController
@RequestMapping("card")
@RequiredArgsConstructor
public class CardController {

    // 要注入是属性必须是final类型，配置类上的@RequiredArgsConstructor 实现了带参构造的注入
    private final CardService cardService;

    /**
     * 添加名片
     * @param card 名片对象 json对象
     * @return 返回对象
     */
    @PostMapping("add")
    public Response<Card> addCard(@RequestBody Card card) {
        cardService.addCard(card);
        return Response.success();
    }

    /**
     * 查看名片
     * @param id 名片ID
     * @return 返回对象
     */
    @GetMapping("view/{id}")
    public Response<Card> viewCardById(@PathVariable("id") Integer id) {
        return Response.success(cardService.selectById(id));
    }

    /**
     * 分页查看名片列表
     * @param pageIndex 查看哪一页
     * @param pageSize 每页几条记录
     * @return 返回对象
     */
    @GetMapping("page")
    public Response<PageInfo<Card>> viewCardByPage(Integer pageIndex, Integer pageSize) {
        return Response.success(cardService.selectCardByPage(pageIndex, pageSize));
    }

    /**
     * 喜欢的名片列表
     * @param pageIndex 查看哪一页
     * @param pageSize 每页几条记录
     * @param ids 喜欢的名片的IDS 使用逗号分割的字串1,2,3,4..100
     * @return 返回对象
     */
    @GetMapping("like")
    public Response<PageInfo<Card>> viewCardByPageWithIds(Integer pageIndex, Integer pageSize, String ids) {
        return Response.success(cardService.selectByIds(pageIndex, pageSize, ids));
    }
}
